//////////////////////////////////////////////////////////////////////////

#ifndef _MENUSCREEN_H_
#define _MENUSCREEN_H_

//#ifndef _LAYER_H_
//#include "layer.h"
//#endif

#ifndef _SCREEN_H_
#include "screen.h"
#endif

#include <vector>

class GUI;
struct SDL_Surface;
class GUI_Surface;
class GUI_Control;
class GUI_ImageSurface;
class Input;


class GUI_MenuScreen : public GUI_Screen
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////

    enum Layer {Main, Settings, Connect, Create, LayerCount};

    GUI_MenuScreen(GUI *_gui);
    virtual ~GUI_MenuScreen();
    
    virtual void Resize();
    virtual void Render(SDL_Surface *_mainSurface);

//////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////

    GUI * m_GUI;

    bool m_NeedRepaint;
    int m_ActiveMenu;
    std::vector<std::string> m_MapNames;
    int  m_CurrentMapSelected;
    
    GUI_ImageSurface *m_MenuBack;
    void ProcessInputResult(int _result);

    /** Key change handler */
    virtual void OnKeyChanged(Input* _input);


    /** Mouse position change handler */
    virtual void OnMousePositionChanged(Input* _input);

//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
